package com.sync;

/**
 * 类锁的静态方法 实现
 * 在method方法中不加static修饰的时候，由于两个是不同的对象，所以两个线程同时执行
 * 加上static 之后，是对象的.class控制，此时多个线程有序执行
 * */
public class SyncObjectClass3 implements Runnable {
    static SyncObjectClass3 sync1 = new SyncObjectClass3();
    static SyncObjectClass3 sync2 = new SyncObjectClass3();

    @Override
    public void run() {
        method();
    }

    public static synchronized void method(){
        System.out.println("我是类所的静态方法形式,我叫"+Thread.currentThread().getName());
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {

        }
        System.out.println("名称叫"+Thread.currentThread().getName()+ " 运行结束");
    }


    public static void main(String[] args) {
        Thread t1 = new Thread(sync1);
        Thread t2 = new Thread(sync2);
        t1.start();
        t2.start();
        //通过isAlive方法检测是否线程还在继续存活
        while(t1.isAlive() || t2.isAlive());

        System.out.println("finished");

    }
}
